gym 101492 A. Comunicating the Tibet(dfs遍历无向图)

题意:

输入n,m,k;分别代表n个节点,m条边,每个节点的取值范围(1~k的正整数)。让你给每个节点赋值,使得每个节点和相连的节点的值不相同。

思路:

一个一个节点赋值,暴力枚举赋值,赋值时考虑周围的节点有没有冲突。。。。但是不能1~n的取节点赋值,,只能从节点1开始dfs遍历图赋值(即每赋值一个节点,必须马上考虑该节点周围的值,才能保证得到最优策略)

给出一组数据

4 3 2

1 3                                 对应到图  1----3----4-----2

3 4

4 2

如果枚举1~n赋值,输出-1;

如果dfs遍历赋值,

输出

1

2

2

1

代码:

#include <bits/stdc++.h>

using namespace std;
const int maxn = 50000+7;
vector<int> arr[maxn];
int col[maxn];
int n,m,k;
void dfs(int u)
{
    if(col[u])
        return ;
    int len = arr[u].size();
    for(int i = 1;i<=k*2;i++)
    {
        int j;
        for(j = 0;j<len;j++)
        {
            int v = arr[u][j];
            if(col[v]==i)
                break;
        }
        if(j==len)
        {
            col[u] = i;
            break;
        }
    }
    for(int i = 0;i<len;i++)
    {
        int v = arr[u][i];
        dfs(v);
    }
}
int main()
{
    memset(col,0,sizeof(col));
    scanf("%d%d%d",&n,&m,&k);
    for(int i = 0;i<m;i++)
    {
        int u,v;
        scanf("%d%d",&u,&v);
        arr[u].push_back(v);
        arr[v].push_back(u);
    }
    for(int i = 1;i<=n;i++)
        if(!col[i])
            dfs(i);
    for(int i = 1;i<=n;i++)
        if(col[i]>k)
        {
            printf("-1\n");
            return 0;
        }
    for(int i = 1;i<=n;i++)
        printf("%d\n",col[i]);
    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自2020年以来,自动驾驶汽车(Autonomous Vehicle)在这一领域取得了显著进展。 自动驾驶汽车通过使用先进的传感技术,如雷达、激光雷达和摄像头,以及深度学习和人工智能算法,实现了车辆的自主驾驶。它们能够感知周围环境,了解道路状况,并做出相应的决策和行驶动作,从而实现无需人类操控的车辆行驶。 自动驾驶汽车在2020年迅速崭露头角。它们的技术日益成熟,不断的实验和测试表明其在安全性和性能方面已经取得了显著的突破。虽然仍然存在一些挑战,比如在复杂城市环境中导航和处理紧急情况,但这些问题正经过不断的研究和改进来得以解决。 在未来,自动驾驶汽车有望在各个领域发挥重要作用。首先,它们将可以提高道路交通的安全性。由于自动驾驶车辆不受人类司机的疲劳、分心和驾驶误差的限制,它们的驾驶能力更为稳定和准确。其次,自动驾驶汽车还能够提高交通效率。通过与其他车辆实时通信和协同,它们可以避免交通堵塞和减少事故发生,从而减少交通拥堵和行车时间成本。 此外,自动驾驶汽车也将为交通出行带来便利和舒适性。乘客可以更轻松地进行其他活动,如工作、休息或娱乐,而不必担心驾驶问题。老年人和残障人士也将能够自由独立地出行,提高他们的生活质量。 综上所述,作为2020年的重要趋势,自动驾驶汽车具有广阔的应用前景。通过不断的创新和发展,它们将在道路交通安全、交通效率和出行体验方面取得进一步的提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值